﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Tipler.DataSetler;
using System.Data;
using IsKurallari.Sozlesme;
using Tipler.Siniflar;
using Tipler.OzellikTipleri;
using Tipler.Enumlar;
using IsKurallari.Yetki;
using Tipler.RaporDataSetler;

namespace IKYSWeb.Sozlesme
{
    [YetkiAttribute(EnumSayfaYetkileri.Herkes_Yetkili)]
    public partial class SozlesmeListeleme : BasePage
    {
        private SozlesmeDataSet SozlesmeListesi
        {
            get { return (SozlesmeDataSet)Session["SozlesmeListesi"]; }
            set { Session["SozlesmeListesi"] = value; }
        }

        private int SecilenSozlesmeID
        {
            get { return Convert.ToInt32(Session["SecilenSozlesmeID"].ToString()); }
            set { Session["SecilenSozlesmeID"] = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int LisansSahibi = -1;
                if (AktifKullanici.KullaniciBilgisiRow.KullaniciTurID == EnumKullaniciTur.Lisans_Sahibi.GetHashCode())
                    LisansSahibi = AktifKullanici.KullaniciID;
                else if (AktifKullanici.KullaniciBilgisiRow.KullaniciTurID == EnumKullaniciTur.Mühendis.GetHashCode())
                    LisansSahibi = AktifKullanici.KullaniciBilgisiRow.LisansSahibiKullaniciID;
                YetkiIsKurali oYetki = new YetkiIsKurali();
                FonksiyonSonuc<KullaniciDataSet> oSonucKullanici = oYetki.KullanicilariGetirByLisansSahibi(LisansSahibi);
                if (oSonucKullanici.HataVarMi)
                    throw new Exception(oSonucKullanici.Hata);
                ListDoldurFromDS(oSonucKullanici.Sonuc, ddlMuhendis, "ISIM", "KullaniciID", ListeIlkYazı.Hepsi);

                ListSatirEkle(ddlSozlesmeDurum, "Hepsi", "-1");
                YetkiliBolgeDoldur();
            }
        }

        private void YetkiliBolgeDoldur()
        {
            //Yetkili Illeri Doldurma
            DataTable dt = AktifKullanici.KullaniciYetkiliBolgeleri.KullaniciYetkiliBolge.DefaultView.ToTable(true, "IlID");
            DataSet ds = new DataSet();
            ds.Merge(dt);
            string YetkiliIller = DSValueToStr(ds);
            IlPrmDataSet.IlPrmRow[] drIller = (IlPrmDataSet.IlPrmRow[])CachePage.IlGetir().IlPrm.Select("IlID IN " + YetkiliIller);
            IlPrmDataSet dsIl = new IlPrmDataSet();
            dsIl.Merge(drIller);
            ListDoldurFromDS(dsIl, ddlIl, "IlAdi", "IlID", ListeIlkYazı.Seçiniz);
            if (drIller.Length == 1)
            {
                ddlIl.SelectedValue = drIller[0].IlID.ToString();
                ddlIl.Enabled = false;
            }

            ddlIl_SelectedIndexChanged(null, null);
        }
        protected void ddlIl_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlIlce.Items.Clear();
            ddlIlce.Enabled = true;
            if (ddlIl.SelectedValue != "-1")
            {
                string YetkiliIlceler = DSValueToStr(AktifKullanici.KullaniciYetkiliBolgeleri, "IlceID");
                IlcePrmDataSet.IlcePrmRow[] drIlceler = (IlcePrmDataSet.IlcePrmRow[])CachePage.IlceGetir().IlcePrm.Select("IlceID IN " + YetkiliIlceler + " AND IlID=" + ddlIl.SelectedValue);
                IlcePrmDataSet dsIlce = new IlcePrmDataSet();
                dsIlce.Merge(drIlceler);
                ListDoldurFromDS(dsIlce, ddlIlce, "IlceAdi", "IlceID", ListeIlkYazı.Seçiniz);
                if (drIlceler.Length == 1)
                {
                    ddlIlce.SelectedValue = drIlceler[0].IlceID.ToString();
                    ddlIlce.Enabled = false;
                }
            }
            else
            {
                ListSatirEkle(ddlIlce, "Seçiniz", "-1");
            }
        }
        private void SozlesmeListele()
        {
            SozlesmeIsKurali oSozlesme = new SozlesmeIsKurali();
            FonksiyonSonuc<SozlesmeDataSet> oSonucSozlesme = oSozlesme.SozlesmeGetir(ucSozlesmeNo.Sayi.ToString(),
                                                                                     Convert.ToInt32(ddlMuhendis.SelectedValue),
                                                                                     txtMusteriAdi.Text,
                                                                                     txtMusteriSoyadi.Text,
                                                                                     ucSozlesmeTarihAralik.BasTarih,
                                                                                     ucSozlesmeTarihAralik.SonTarih,
                                                                                     Convert.ToInt32(ddlIl.SelectedValue),
                                                                                     Convert.ToInt32(ddlIlce.SelectedValue),
                                                                                     txtKoyuMakallesi.Text,
                                                                                     txtAdaNo.Text,
                                                                                     txtParselNo.Text,
                                                                                     ucYuzOlcumuBas.Sayi,
                                                                                     ucYuzOlcumuSon.Sayi,
                                                                                     Convert.ToInt32(ddlSozlesmeDurum.SelectedValue));
            if (oSonucSozlesme.HataVarMi)
                new Exception(oSonucSozlesme.Hata + oSonucSozlesme.ExMesaji);

            SozlesmeListesi = oSonucSozlesme.Sonuc;
            grdSozlesmeListe.DataSource = SozlesmeListesi;
            grdSozlesmeListe.DataBind();
        }

        protected void btnListele_Click(object sender, EventArgs e)
        {
            SozlesmeListele();
        }

        protected void grdSozlesmeListe_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName != "Page")
            {
                int rowIndex = Convert.ToInt32(e.CommandArgument);
                int id = Convert.ToInt32(grdSozlesmeListe.DataKeys[rowIndex].Value.ToString());

                if (e.CommandName == "duzenle")
                {
                    SecilenSozlesmeID = id;
                    Response.Redirect("SozlesmeKayit.aspx?u=1");
                }
                if (e.CommandName == "sil")
                {
                    SozlesmeDataSet.SozlesmeRow drSozlesme = SozlesmeListesi.Sozlesme.FindBySozlesmeID(id);
                    drSozlesme.Delete();

                    if (SozlesmeListesi.HasChanges())
                    {
                        SozlesmeIsKurali oSozlesme = new SozlesmeIsKurali();
                        FonksiyonSonuc<SozlesmeDataSet> oSonuc = oSozlesme.SozlesmeKaydet((SozlesmeDataSet)SozlesmeListesi.GetChanges(), null);
                        if (oSonuc.HataVarMi)
                        {
                            SozlesmeListesi.RejectChanges();
                            throw new Exception(oSonuc.Hata);
                        }
                        SozlesmeListesi.AcceptChanges();
                    }

                    SozlesmeListele();
                    MesajGoster(Page, "Sozlesme bilgisi başarıyla silinmiştir.", MesajTipiEnum.Basari);
                }
                if (e.CommandName == "Rapor")
                {

                    SozlesmeIsKurali oSozlesme = new SozlesmeIsKurali();
                    FonksiyonSonuc<DSSozlesme> oSonucSozlesme = oSozlesme.SozlesmeRaporGetir(id);
                    if (oSonucSozlesme.HataVarMi)
                        new Exception(oSonucSozlesme.Hata + oSonucSozlesme.ExMesaji);

                    #region EvrakRaporuAlma

                    //DSSozlesme dsSozlesme = new DSSozlesme();
                    //DSSozlesme.TBLSOZLESMERow drSozlesme = dsSozlesme.TBLSOZLESME.NewTBLSOZLESMERow();
                    //drSozlesme.SAHIBI_ADRES = "asasdsa";

                    //dsSozlesme.TBLSOZLESME.AddTBLSOZLESMERow(drSozlesme);

                    DataSet dsRapor = new DataSet();
                    DataTable dtSozlesme = new DataTable();
                    dtSozlesme.TableName = "DSSozlesme_DtSozlesme";
                    dsRapor.Tables.Add(dtSozlesme);
                    dsRapor.Tables["DSSozlesme_DtSozlesme"].Merge(oSonucSozlesme.Sonuc.TBLSOZLESME);

                    Session["dsRaporum"] = dsRapor;
                    Session["RaporPath"] = "Sozlesme.rdlc";
                    ScriptManager.RegisterClientScriptBlock(this, typeof(System.Web.UI.Page), "evrak", "<script>window.open('../Rapor/RaporGoruntule.aspx','Yazdir','toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,left = 0,top = 0,width=760,height=660px');</script>", false);

                    #endregion
                }
            }
        }
        protected void grdSozlesmeListe_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grdSozlesmeListe.DataSource = SozlesmeListesi;
            grdSozlesmeListe.PageIndex = e.NewPageIndex;
            grdSozlesmeListe.DataBind();
        }
    }
}